import request from '@/utils/request'

/**
 * 课程管理API服务
 */

/**
 * 获取课程分页列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.size 每页条数
 * @param {string} params.keyword 搜索关键词
 * @param {string} params.category 课程分类
 * @param {string} params.status 课程状态
 * @returns {Promise} 返回课程分页数据
 */
export const getCoursePage = (params) => {
  return request({
    url: '/api/edu/course/getCoursePage',
    method: 'post',
    data: params
  })
}

/**
 * 获取所有课程列表
 * @returns {Promise} 返回课程列表
 */
export const getCourseList = () => {
  return request({
    url: '/api/edu/course/getCourseList',
    method: 'post'
  })
}

/**
 * 根据ID获取课程详情
 * @param {string} id 课程ID
 * @returns {Promise} 返回课程详情
 */
export const getCourseById = (id) => {
  return request({
    url: '/api/edu/course/getCourseById',
    method: 'post',
    params: { id }
  })
}

/**
 * 添加或更新课程
 * @param {Object} courseData 课程数据
 * @returns {Promise} 返回操作结果
 */
export const saveOrUpdateCourse = (courseData) => {
  return request({
    url: '/api/edu/course/addOrUpdateCourse',
    method: 'post',
    data: courseData
  })
}

/**
 * 批量删除课程
 * @param {Array<string>} ids 课程ID数组
 * @returns {Promise} 返回操作结果
 */
export const deleteCourses = (ids) => {
  return request({
    url: '/api/edu/course/deleteCourses',
    method: 'post',
    data: ids
  })
}

/**
 * 更新课程状态
 * @param {string} id 课程ID
 * @param {number} status 课程状态 (0-禁用, 1-启用)
 * @returns {Promise} 返回操作结果
 */
export const updateCourseStatus = (id, status) => {
  return request({
    url: '/api/edu/course/updateStatus',
    method: 'post',
    data: { id, status }
  })
}

/**
 * 获取课程分类列表
 * @returns {Promise} 返回分类列表
 */
export const getCourseCategories = () => {
  return request({
    url: '/api/edu/category/getCategoryList',
    method: 'post'
  })
}

/**
 * 添加或更新课程分类
 * @param {Object} categoryData 分类数据
 * @returns {Promise} 返回操作结果
 */
export const saveOrUpdateCategory = (categoryData) => {
  return request({
    url: '/api/edu/category/addOrUpdateCategory',
    method: 'post',
    data: categoryData
  })
}

/**
 * 删除课程分类
 * @param {string} id 分类ID
 * @returns {Promise} 返回操作结果
 */
export const deleteCategory = (id) => {
  return request({
    url: '/api/edu/category/deleteCategory',
    method: 'post',
    params: { id }
  })
}

/**
 * 获取课程章节列表
 * @param {string} courseId 课程ID
 * @returns {Promise} 返回章节列表
 */
export const getCourseChapters = (courseId) => {
  return request({
    url: '/api/edu/chapter/getChapterList',
    method: 'post',
    params: { courseId }
  })
}

/**
 * 添加或更新课程章节
 * @param {Object} chapterData 章节数据
 * @returns {Promise} 返回操作结果
 */
export const saveOrUpdateChapter = (chapterData) => {
  return request({
    url: '/api/edu/chapter/addOrUpdateChapter',
    method: 'post',
    data: chapterData
  })
}

/**
 * 删除课程章节
 * @param {string} id 章节ID
 * @returns {Promise} 返回操作结果
 */
export const deleteChapter = (id) => {
  return request({
    url: '/api/edu/chapter/deleteChapter',
    method: 'post',
    params: { id }
  })
}

/**
 * 获取章节视频列表
 * @param {string} chapterId 章节ID
 * @returns {Promise} 返回视频列表
 */
export const getChapterVideos = (chapterId) => {
  return request({
    url: '/api/edu/video/getVideoList',
    method: 'post',
    params: { chapterId }
  })
}

/**
 * 添加或更新章节视频
 * @param {Object} videoData 视频数据
 * @returns {Promise} 返回操作结果
 */
export const saveOrUpdateVideo = (videoData) => {
  return request({
    url: '/api/edu/video/addOrUpdateVideo',
    method: 'post',
    data: videoData
  })
}

/**
 * 删除章节视频
 * @param {string} id 视频ID
 * @returns {Promise} 返回操作结果
 */
export const deleteVideo = (id) => {
  return request({
    url: '/api/edu/video/deleteVideo',
    method: 'post',
    params: { id }
  })
}

export default {
  getCoursePage,
  getCourseList,
  getCourseById,
  saveOrUpdateCourse,
  deleteCourses,
  updateCourseStatus,
  getCourseCategories,
  saveOrUpdateCategory,
  deleteCategory,
  getCourseChapters,
  saveOrUpdateChapter,
  deleteChapter,
  getChapterVideos,
  saveOrUpdateVideo,
  deleteVideo
}